Skip to content

メッセージ履歴の Undo/Redo UI 追加#27

Merged
ktmage merged 4 commits into
developmentfrom
feature/9/undo-redo
Feb 28, 2026
Merged

メッセージ履歴の Undo/Redo UI 追加#27
ktmage merged 4 commits into
developmentfrom
feature/9/undo-redo

Conversation

@ktmage

@ktmage ktmage commented Feb 28, 2026

Copy link
Copy Markdown
Owner

Summary

チャットヘッダーに Undo/Redo ボタンを追加し、直前のアシスタント応答を取り消したり、取り消しを元に戻せるようにした。
Undo 時にはユーザーメッセージのテキストを入力欄に復元し、何が取り消されたか分かるようにしている。

Related Issue

Closes #9

Changes

  • SDK 層に unrevertSession() メソッドを追加(session.unrevert() 呼び出し)
  • プロトコル層に undoSession / redoSession メッセージ型とハンドラを追加
  • UndoIcon / RedoIcon SVG コンポーネントを追加
  • ChatHeader に Undo/Redo ボタンを追加(セッションあり・子セッション以外で表示)
  • ボタンの disabled 制御:メッセージ不足時、ビジー時、Redo 不可時
  • handleUndo: ユーザーメッセージのテキストを prefillText に復元してから revert 実行
  • handleRedo: prefillText をクリアしてから unrevert 実行
  • activeSessionRef を導入し handleEvent を安定化(パフォーマンス改善)
  • header.undo / header.redo ロケールキーを追加(en/ja)
  • ChatHeader 単体テスト・シナリオテスト 20 を追加

Checklist

  • npm run build passes
  • npm test passes

ktmage added 3 commits March 1, 2026 08:49
- Add unrevertSession() to OpenCodeConnection (session.unrevert SDK call)
- Add undoSession/redoSession message types to WebviewToExtMessage
- Add undoSession handler: revert session → send activeSession + messages
- Add redoSession handler: unrevert session → send activeSession + messages

Closes #9
- Add UndoIcon / RedoIcon SVG components
- Add onUndo, onRedo, canUndo, canRedo, isBusy props to ChatHeader
- Show undo/redo buttons when activeSession exists and not in child session
- Add handleUndo: extract user message text → setPrefillText → revert
- Add handleRedo: clear prefillText → unrevert
- Add canUndo / canRedo computed flags
- Stabilize handleEvent with activeSessionRef to prevent useEffect churn
- Add header.undo / header.redo locale keys (en/ja)
- Add ChatHeader undo/redo button tests (render, disabled, click, visibility)
- Add scenario 20: undo/redo lifecycle test covering undo → prefillText
  restoration, redo → prefillText clear, disabled states, and busy states
@ktmage ktmage linked an issue Feb 28, 2026 that may be closed by this pull request
@ktmage ktmage merged commit 5ee7bda into development Feb 28, 2026
1 check passed
@ktmage ktmage deleted the feature/9/undo-redo branch March 1, 2026 17:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

メッセージ履歴の Undo/Redo UI 追加

1 participant